package priv.xakml.toolkit;


import com.sun.javafx.image.BytePixelSetter;

import java.util.Base64;

/**
 * 二进制数据与其他数据格式间的转换
 *
 */
public class BinaryConverter {

    /**
     * 转化字节数据为16进制的字符串表示形式
     * @param data 需要转化的数据
     * @return
     */
    public static String toHexString(byte[] data){
        StringBuilder stringBuilder =new StringBuilder(data.length);
        for(byte b : data){
            String temp = Integer.toHexString(b & 0xff);
            if(temp.length() < 2){
                stringBuilder.append("0");
            }
            stringBuilder.append(temp);
        }
        return stringBuilder.toString();
    }

    /**
     * 转化字节数据为16进制的字符串表示形式
     * @param data 需要转化的数据
     * @param is_uppercase  是否大写输出
     * @return
     */
    public static String toHexString(byte[] data,boolean is_uppercase) {
        String hexString = toHexString(data);
        if (is_uppercase)
            hexString = hexString.toUpperCase();
        return hexString;
    }

    /**
     * 使用base64编码字节数组
     * 把字节数组转换为对应的base64格式
     * @return 编码后的字符串
     */
    public static String toBase64String(byte[] data){
        return Base64.getEncoder().encodeToString(data);
    }

    /**
     * 解码base64字符串
     * @param base64String 编码后的base64字符串
     * @return
     */
    public static byte[] fromBase64String(String base64String){
        return  Base64.getDecoder().decode(base64String);
    }
}
